(function () {
    "use strict";

    if (Object.assign) {
        return;
    }

    require("./slice-args");

    function assign(target, source) {
        if (!source) {
            return target;
        }

        for (var name in source) {
            target[name] = source[name];
        }

        var nextArgs = Function.sliceArgs(arguments, 2);
        nextArgs.unshift(target);
        return assign.apply(this, nextArgs);
    };

    Object.assign = assign;
})();
